package servlets;

import java.io.IOException;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import logica.datatypes.Jugador.DataJugador_R17;
import logica.fachadas.IFabrica;
import logica.fachadas.IFachadaPublico;

import persistencia.Config;
import persistencia.PersistenciaException;


public class Jugadores extends HttpServlet
{
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
		doPost(req, resp);
	}
	
	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
	    // obtengo los datos del Request
	    

        HttpSession session = req.getSession();
        String codigo = req.getParameter("codigo");
		RequestDispatcher rd;
		ServletContext context = super.getServletContext();
		String msgError = new String();
		
		if ((codigo == null)){
			msgError = "Debe seleccionar una Partida";
		    req.setAttribute("msgError", msgError);
		    rd = req.getRequestDispatcher("Error.jsp");
		    rd.forward(req, resp);
	    }else{
	    
		    try{
		    	Config conf = Config.getInstancia();
				String servidor = conf.getArchivoConf("Servidor"); 
		        int puerto =  Integer.parseInt(conf.getArchivoConf("Puerto"));      
		        IFabrica modelo = (IFabrica)Naming.lookup("//" + servidor +":" + puerto + "/fabrica"); 
		        IFachadaPublico fachadaPublico= modelo.getFachadaPublico();
		
			 	DataJugador_R17[] dataJugador_R17 = fachadaPublico.listarJugadoresPartida(codigo); 
			 	  
	            ArrayList arrjuga = new ArrayList<DataJugador_R17>(); 
	                    for(int i=0; i<dataJugador_R17.length; i++) 
	                            arrjuga.add(dataJugador_R17[i]); 
	
	
			    synchronized (context){
			    	context.setAttribute("DataJugadores",arrjuga);
			    }    
	
				rd = req.getRequestDispatcher("Jugadores.jsp");
				rd.forward(req, resp);
				
			} catch (MalformedURLException e) {
			    msgError = e.getMessage();
			    req.setAttribute("msgError", msgError);
			    rd = req.getRequestDispatcher("Error.jsp");
			    rd.forward(req, resp);
			} catch (RemoteException e) {
			    msgError = e.getMessage();
			    req.setAttribute("msgError", msgError);
			    rd = req.getRequestDispatcher("Error.jsp");
			    rd.forward(req, resp);
			} catch (NotBoundException e) {
			    msgError = e.getMessage();
			    req.setAttribute("msgError", msgError);
			    rd = req.getRequestDispatcher("Error.jsp");
			    rd.forward(req, resp);
			} catch (PersistenciaException e) {
			    msgError = e.getMessage();
			    req.setAttribute("msgError", msgError);
			    rd = req.getRequestDispatcher("Error.jsp");
			    rd.forward(req, resp);
			}
		}
	
	}

}